// 页面: 工作台-租赁管理-收费
const $app = getApp()
Page({
  data: {
    Auth: {}, // 权限数据(勿删)
    userInfo: $app.userInfo || {}, // 用户信息
    // ===== 参数 =====
    param: {
      keywords: null, // 搜索条件
      createDepart: '', // 发起部门id
      completeStatus: '1', // 执行状态 null:全部 0:已完成 1: 未完成
      paymentTimeStartTime: null, // 收费截止日期开始
      paymentTimeEnd: null, // 收费截止日期结束
      pageNo: 1, // 第几页
      pageSize: 10 // 一页几条数据
    },
    // ========== 数据相关 ==========
    data: [], // 消息数据
    total: 0, // 数据总数
    refreshing: false, // 是否正在刷新中
    loading: false, // 是否正在加载中
    backTop: false, // 滚动条回到顶部(只要改变值就回到顶部)
    // ========== 数据项相关 ==========
    detailData: {}, // 当前选中数据项数据
    // ===== 列表数据 =====
    listData: {
      completeStatus: $app.listData.payStatus // 完成状态
      // overDayStatus: $app.listData.overDayStatus, // 逾期状态
    },
    // ===== 判断 =====
    judgeAuth: {}
    // ===== end =====
  },
  model (e) { $app.$common_wx.model(e, this) }, // 双向绑定
  // ========== 生命周期: 页面加载 ==========
  onLoad: function (options) {
    this.setData({ userInfo: $app.userInfo })
    // ========== 获取权限数据(勿删) ==========
    const pages = getCurrentPages()
    const path = pages.length ? pages[pages.length - 1].route : null
    $app.$common_base.getAuth(path).then((Auth) => { 
      this.setData({ Auth })
      this.judgeAuthEvent() // 判断权限
    })
    // ========== 获取权限数据(勿删) end ==========
    this.getData() // 获取数据
  },
  // ========== 生命周期: 页面初次渲染完成 ==========
  onReady: function () {},
  // ========== 生命周期: 页面显示 ==========
  onShow: function () {},
  // ========== 生命周期: 页面隐藏 ==========
  onHide: function () {},
  // ========== 生命周期: 页面卸载 ==========
  onUnload: function () {},
  // ========== 判断权限 ==========
  judgeAuthEvent () {
    const Auth = this.data.Auth
    const addRecord = Auth.addRecord // 添加收费记录
    let judgeAuth = {}
    if (addRecord) judgeAuth['1'] = { addRecord }
    // console.log('judgeAuth', judgeAuth)
    this.setData({ judgeAuth })
  },
  // ========== 下一页返回方法 ==========
  back (tip) {
    this.getData(`back:${tip}`) // 获取数据
  },
  // ========== 查询 ==========
  search () {
    this.getData() // 获取数据
  },
  // ========== 时间段改变时 ==========
  timeChange (e) {
    e = e.detail
    const type = e.currentTarget.dataset.data
    const model = e.currentTarget.dataset.model
    const startStr = type === 'start' ? model : false
    const endStr = type === 'end' ? model : false
    const startTime = this.data.param.paymentTimeStartTime
    const endTime = this.data.param.paymentTimeEnd
    $app.$common.limitTime(startStr, startTime, endStr, endTime, this).then(() => {
      this.getData() // 获取数据
    })
  },
  // ========== 执行状态改变时 ==========
  completeStatusChange (e) {
    this.getData() // 获取数据
  },
  // ========== 获取数据 ==========
  getData (RAndL) {
    const dataKey = 'data'
    if (!RAndL) {
      $app.$common.openLoading() // 开启加载
      this.setData({ ['param.pageNo']: 1 })
    }
    this.data.param.createDepart = (this.data.userInfo.level === '4') ? this.data.userInfo.departid : ''
    $app.$api.contractPay.selectContractPayList({
      '*': true,
      '/': true,
      ...this.data.param
    }).then(({ data, count }) => {
      console.log('api-列表数据', data, count)
      let newData = data || []
      const total = count || 0
      if (RAndL === 'refresh') { // 刷新
        this.setData({ refreshing: false })
      } else if (RAndL === 'load') { // 加载
        newData = this.data[dataKey].concat(newData)
        this.setData({ loading: false })
      } else {
        this.setData({ backTop: !this.data.backTop })
      }
      this.setData({ [dataKey]: newData, total })
      $app.$common.closeLoading() // 关闭加载
      RAndL && RAndL.includes('back:') && $app.$common.message(RAndL.slice(5), 'success')
    }).catch(({ type, res }) => {
      console.log('api-列表数据', type, res)
      let newData = []
      let total = 0
      if (RAndL === 'refresh') { // 刷新
        this.setData({ refreshing: false })
      } else if (RAndL === 'load') { // 加载
        newData = this.data[dataKey]
        total = this.data.total
        const pageNo = this.data.param.pageNo - 1 // 页数
        this.setData({ loading: false, pageNo: pageNo })
      } else {
        this.setData({ backTop: !this.data.backTop })
      }
      this.setData({ [dataKey]: newData, total })
      $app.$common.closeLoading() // 关闭加载
      let tip = '数据获取失败'
      tip = RAndL && RAndL.includes('back:') ? RAndL.slice(5) + '，' + tip : tip
      $app.$common.message(tip, 'error') // 提示信息
    })
  },
  // ========== 刷新 ==========
  refresh () {
    this.setData({ ['param.pageNo']: 1 })
    this.getData('refresh') // 获取数据
  },
  // ========== 加载 ==========
  load () {
    const dataKey = 'data'
    if (this.data[dataKey].length >= this.data.total) {
      this.setData({ loading: false })
      return
    }
    const pageNo = this.data.param.pageNo + 1
    this.setData({ ['param.pageNo']: pageNo })
    this.getData('load') // 获取数据
  },
  // ========== '详情按钮'点击事件 ==========
  detail (e) {
    const b = e.currentTarget.dataset.item
    const path = '/pages/home_workbench/work_rent_charge-detail/work_rent_charge-detail'
    wx.navigateTo({ url: `${path}?id=${b.id}` })
  },
  // ========== '更多按钮'点击事件 ==========
  more (e) {
    this.setData({ detailData: e.currentTarget.dataset.item }) // 详情数据
    const x = e.detail.x
    const y = e.detail.y
    this.selectComponent("#zjMore").open(x, y)
  },
  // ========== 添加收费记录 ==========
  addRecord () {
    this.selectComponent("#zjMore").close() // 关闭'更多组件'
    const b = this.data.detailData
    const path = '/pages/home_workbench/work_rent_charge-addRecord/work_rent_charge-addRecord'
    wx.navigateTo({ url: `${path}?id=${b.id}&truePay=${b.truePay}&paymentMoney=${b.paymentMoney}` })
  }
})